
// 执行异步Ajax请求
function beginAsyncAjax(URL, requestData, type, callback, options) {
    //原生跨域请求
    navigator.networkCenter.requestURL(URL, requestData, type, options, callback);
}

// 根据页面地址和页面类型跳转到页面
/*
* pageJumpsInfo需包含的属性
* URL
* type 选值范围：Normal，Direct
* showType 选值范围：Push，Present
* animated 是否需要动画
* shouldKillForwardPages 是否需要杀掉之前的页面
* killForwardPageCount: 要杀掉之前页面数
* topBarTitle
* UIFeatureJSONFileSubPath 页面自定义JSO文件子路径
* */
function jumpToPage(pageJumpsInfo, callback) {
    navigator.pagesController.shouldJumpToPage(pageJumpsInfo, callback);
}

// 通知平台页面准备好了，可以推到主屏幕了
function putMeIntoMainScreen(callback) {
    navigator.pagesController.putMeIntoMainScreen(callback);
}

function showMeRightNow(callback) {
    navigator.pagesController.showMeRightNow(callback);
}

// 返回到上一个页面
function backToForwardPage(animated, callback) {
    navigator.pagesController.backToForwardPage(animated, callback);
}
// 启用左滑手势
function enablePageSlider(callback) {
    navigator.pageSliderController.enablePageSlider(callback);
}

// 禁用左滑手势
function disablePageSlider(callback) {
    navigator.pageSliderController.disablePageSlider(callback);
}

// 扫描二维码
function scanQRCode(callback) {
    navigator.barCodeScanner.scanQRCode(callback)
}

function showActionSheet(callback, title, arrOtherBtnItemTitles, destructiveBtnItemTitle, cancelBtnItemTitle, fromRect) {
    navigator.actionSheet.showActionSheet(callback, title, arrOtherBtnItemTitles, destructiveBtnItemTitle, cancelBtnItemTitle, fromRect);
}

// 隐藏底部Tab
function hideBottomTabBar(animated, callback) {
    navigator.bottomTabBarController.hideBottomTabBar(callback, animated, duration)
}

// 显示底部Tab
function showBottomTabBar(animated, callback) {
    navigator.bottomTabBarController.showBottomTabBar(callback, animated, duration)
}

// 用户登录后设置用户ID
function setUserID(userID, callback) {
    navigator.userManager.setUserID(userID, callback);
}

// 用户退出登录后移除用户ID
function removeStoredUserID(callback) {
    navigator.userManager.removeStoredUserID(callback);
}

// 获取当前用户永久保存的数据
function getPermanentData(key, callback) {
    navigator.userPermanentDataStorage.getPermanentData(key, callback);
}

// 设置当前用户永久保存的数据
function setPermanentData(key, value, callback) {
    navigator.userPermanentDataStorage.setPermanentData(key, value, callback);
}

// 移除当前用户永久保存的数据
function removePermanentData(key, callback) {
    navigator.userPermanentDataStorage.removePermanentData(key, callback);
}

// 清空当前用户永久保存的数据
function clearPermanentDatas(callback) {
    navigator.userPermanentDataStorage.clearPermanentDatas(callback);
}

var SecretDataSourceType = {};
SecretDataSourceType.App = 0;
SecretDataSourceType.User = 1;

// 获取私密数据
function getSecretData(from, key, callback) {
    var pluginObject = null;

    if (from == SecretDataSourceType.App) {
        pluginObject = navigator.appSecretDataStorage;
    } else if (from == SecretDataSourceType.User) {
        pluginObject = navigator.userSecretDataStorage;
    } else {

    }

    if (pluginObject == null) {
        if ((callback != undefined) && (callback != null)) {
            var returnedObjForCallback = new Object();
            returnedObjForCallback.result = false;
            returnedObjForCallback.error = '无法获取到pluginObject!';
            callback(returnedObjForCallback);
        }

        return;
    }

    pluginObject.getSecretData(key, callback);
}

// 设置私密数据
function setSecretData(from, key, value, callback) {
    var pluginObject = null;

    if (from == SecretDataSourceType.App) {
        pluginObject = navigator.appSecretDataStorage;
    } else if (from == SecretDataSourceType.User) {
        pluginObject = navigator.userSecretDataStorage;
    } else {

    }

    if (pluginObject == null) {
        if ((callback != undefined) && (callback != null)) {
            var returnedObjForCallback = new Object();
            returnedObjForCallback.result = false;
            returnedObjForCallback.error = '无法获取到pluginObject!';
            callback(returnedObjForCallback);
        }

        return;
    }

    pluginObject.setSecretData(key, value, callback);
}

// 移除私密数据
function removeSecretData(from, key, callback) {
    var pluginObject = null;

    if (from == SecretDataSourceType.App) {
        pluginObject = navigator.appSecretDataStorage;
    } else if (from == SecretDataSourceType.User) {
        pluginObject = navigator.userSecretDataStorage;
    } else {

    }

    if (pluginObject == null) {
        if ((callback != undefined) && (callback != null)) {
            var returnedObjForCallback = new Object();
            returnedObjForCallback.result = false;
            returnedObjForCallback.error = '无法获取到pluginObject!';
            callback(returnedObjForCallback);
        }

        return;
    }

    pluginObject.removeSecretData(key, callback);
}

// 清空私密数据
function clearSecretDatas(from,callback) {
    var pluginObject = null;

    if (from == SecretDataSourceType.App) {
        pluginObject = navigator.appSecretDataStorage;
    } else if (from == SecretDataSourceType.User) {
        pluginObject = navigator.userSecretDataStorage;
    } else {

    }

    if (pluginObject == null) {
        if ((callback != undefined) && (callback != null)) {
            var returnedObjForCallback = new Object();
            returnedObjForCallback.result = false;
            returnedObjForCallback.error = '无法获取到pluginObject!';
            callback(returnedObjForCallback);
        }

        return;
    }

    pluginObject.clearSecretDatas(callback);
}

// 支付方式
var PayProvider = {};
// 支付宝支付
PayProvider.Ali = 0;
// 微信支付
PayProvider.WeChat = 1;

// 支付接口
/*
info
支付宝格式:
{
 partner: 支付宝签约得到的PID 字符串
 seller: 收款的支付宝账号 字符串
 privateKey: rsa私钥 字符串
 tradeNO: 订单ID（由商家自行制定）字符串
 productName: 商品标题 字符串
 productDescription: 商品描述 字符串
 amount: 商品价格 小数
 notifyURL: 回调URL 字符串
 service: 字符串
 paymentType: 字符串
 inputCharset: 字符串
 itBPay: 字符串
 showUrl: 字符串
 rsaDate: 可选 字符串
 appID: 可选 字符串
}
 */

function pay(provider, info, callback) {
    var pluginObject = null;

    if (provider == PayProvider.Ali) {
        pluginObject = navigator.aliPay;
    } else if (provider == PayProvider.WeChat) {

    } else {

    }
    if (pluginObject == null) {
        if ((callback != undefined) && (callback != null)) {
            var returnedObjForCallback = new Object();
            returnedObjForCallback.result = false;
            returnedObjForCallback.error = '无法获取到pluginObject!';
            callback(returnedObjForCallback);
        }

        return;
    }
    pluginObject.pay(info, callback);
}

/*
* options
* {
*   destinationFileName: 目标文件名 默认为当前时间的字符串格式
*   allowsEditing: 拍照完是否出现编辑框 默认为false
*   targetWidth: 照片裁剪缩放宽度 小数
*   targetHeight: 照片裁剪缩放高度 小数
*   cropping: 当尺寸不符合的时候是否裁剪 布尔 默认为false
*   saveToPhotosAlbum: 是否保存至相册 布尔 默认为false
*   quality: 照片质量 取值范围是0<quality<100 小数 默认为100
*   format: 照片格式 取值范围:"JPG", "PNG" 默认为JPG
*   showProcessingHUD: 拍完照处理过程中是否需要显示处理中的指示器 布尔 默认为true
* }
* */
 // 调用摄像头拍照
function captureImageViaCamera(callback, options) {
    navigator.camera.captureImage(callback, options);
}

/*
 * options
 * {
 *   fromSavedPhotosAlbum: 是否从相册中选择而不是照片库 布尔 默认为false
 *   destinationFileName: 目标文件名 默认为当前时间的字符串格式
 *   allowsEditing: 拍照完是否出现编辑框 默认为false
 *   targetWidth: 照片裁剪缩放宽度 小数
 *   targetHeight: 照片裁剪缩放高度 小数
 *   cropping: 当尺寸不符合的时候是否裁剪 布尔 默认为false
 *   quality: 照片质量 取值范围是0<quality<100 小数 默认为100
 *   format: 照片格式 取值范围:"JPG", "PNG" 默认为JPG
 *   showProcessingHUD: 拍完照处理过程中是否需要显示处理中的指示器 布尔 默认为true
 * }
 * */
function pickImageViaPhotoLibrary(callback, options) {
    navigator.photoLibrary.pickImage(callback, options);
}

// 上传图片
function uploadImageFile(accessToken, imageFileURL, callback) {
    navigator.imageFileUploader.uploadFile(accessToken, imageFileURL, callback);
}

// 社交平台
var SocialPlatform = {};
// 新浪微博
SocialPlatform.SinaWeibo = "SinaWeibo";
// 微信好友
SocialPlatform.WeChatFriends = "WeChatSession";
// 微信朋友圈
SocialPlatform.WeChatFriendCircle = "WeChatTimeline";
// 微信收藏
SocialPlatform.WeChatFavorites = "WeChatFavorite";
// QQ
SocialPlatform.QQ = "QQ";
// QQ空间
SocialPlatform.QZone = "QZone";

// 分享内容类型
var SocialInfoMediaType = {};
// 文本
SocialInfoMediaType.Text = "Text";
// 图片
SocialInfoMediaType.Image = "Image";
// 新闻
SocialInfoMediaType.News = "News";
// 音乐
SocialInfoMediaType.Music = "Music";
// 视频
SocialInfoMediaType.Video = "Video";
// 应用, 仅供微信使用
SocialInfoMediaType.App = "App";
// 非Gif消息, 仅供微信使用
SocialInfoMediaType.NonGif = "NonGif";
// Gif消息, 仅供微信使用
SocialInfoMediaType.Gif = "Gif";

/*
 * socialInfo
 * {
 *    mediaType: 分享内容的类型 必传 类型: SocialInfoMediaType 参数支持的社交平台: QQ、微信
 *    destinationSocialPlatform: 分享到的目的平台 可选 不传此参数将弹出分享界面，若此参数有值，则直接分享 类型: SocialPlatform
 *    content: 分享的内容 可选 类型: 字符串 参数支持的社交平台: 新浪、微信、QQ、腾讯、网易、搜狐、豆瓣、人人、开心、有道云笔记、facebook、twitter、邮件、打印、短信、拷贝
 *    imageURL: 分享图片的网络路径 可选 类型: 字符串 参数支持的社交平台: 新浪、微信、QQ、腾讯、网易、搜狐、豆瓣、人人、开心、facebook、twitter、邮件、打印、拷贝、短信）
 *    defaultContent: 默认分享的内容 可选 类型: 字符串 参数支持的社交平台: 新浪、微信、QQ、腾讯、网易、搜狐、豆瓣、人人、开心、有道云笔记、facebook、twitter、邮件、打印、短信、拷贝
 *    title: 标题 可选 类型: 字符串 参数支持的社交平台: 微信、QQ、QQ空间、人人
 *    URL: 分享的链接 可选 类型: 字符串 参数支持的社交平台: 微信、QQ、QQ空间、人人、instapaper）
 *    description 可选 类型: 字符串 主体内容 参数支持的社交平台: 人人
 * }
 */
// 分享接口
function share(socialInfo, callback) {
    navigator.socialInfoShareManager.share(socialInfo, callback)
}

// ActionSheet按钮动作类型
var ActionType = {};
// 拍照
ActionType.Camera = "Camera";
// 照片库
ActionType.PhotoLibrary = "PhotoLibrary";
// 新闻
ActionType.Cancel = "Cancel";

// 弹出ActionSheet选择拍照或者图库
/* options
 * {
 *   saveToPhotosAlbum: 是否保存至相册 布尔 默认为false 此参数仅支持ActionType为Camera的时候
 *   fromSavedPhotosAlbum: 是否从相册中选择而不是照片库 布尔 默认为false 此参数仅支持ActionType为PhotoLibrary的时候
 *   destinationFileName: 目标文件名 默认为当前时间的字符串格式
 *   allowsEditing: 拍照完是否出现编辑框 默认为false
 *   targetWidth: 照片裁剪缩放宽度 小数
 *   targetHeight: 照片裁剪缩放高度 小数
 *   cropping: 当尺寸不符合的时候是否裁剪 布尔 默认为false
 *   quality: 照片质量 取值范围是0<quality<100 小数 默认为100
 *   format: 照片格式 取值范围:"JPG", "PNG" 默认为JPG
 *   showProcessingHUD: 拍完照处理过程中是否需要显示处理中的指示器 布尔 默认为true
 *   rect: { x: , y: } iPad所要传的位置参数
 * }
 *
 * actions中的action格式
 * {
 *   title: 标题，必传 类型: 字符串
 *   action: 对应的点击后的动作 必传 类型: ActionType
 * }
 *
 */
function fetchImage(options, actionSheetTitle, actions, callback) {
    navigator.imageFetcher.fetchImage(options, actionSheetTitle, actions, callback);
}

// 查看本地图片
function checkLocalImages(imageURLs, firstDisplayedImageIndex, deleteable, callback) {
    navigator.imagesChecker.checkLocalImages(imageURLs, firstDisplayedImageIndex, deleteable, callback);
}

// 查看网络图片
function checkWebImages(imageURLs, firstDisplayedImageIndex, callback) {
    navigator.imagesChecker.checkWebImages(imageURLs, firstDisplayedImageIndex, callback);
}

// 获取App当前版本
function getAppVersion(callback) {
    navigator.appVersionManager.getVersion(callback);
}

// 检查版本更新
function checkUpdatableVersion(callback) {
    navigator.appVersionManager.updateIfExistNewVersion(callback);
}

//sql查询
function queryUserDataCenter(strSQL, arguments, execSQLCallback){
    navigator.userDataCenter.query(strSQL, arguments, execSQLCallback);
}

//sql更新（有数据修改的都叫更新）
function updateUserDataCenter(strSQL, arguments, execSQLCallback) {
    navigator.userDataCenter.update(strSQL, arguments, execSQLCallback);
}

var HUDType = {};
// 普通
HUDType.Normal = "Normal";
// 进度
HUDType.Progress = "Progress";
// 成功
HUDType.Succeed = "Succeed";
// 失败
HUDType.Failed = "Failed";
// Info
HUDType.Info = "Info";
/*
* info
* {
*   text: 要显示的内容 可不传 类型: 字符串
 *  progress: 进度 可不传 类型: 小数
 *  type: 显示类型 类型: HUDType 必传
* }
*
 */
/*
function showHUD(info, callback) {
    navigator.HUDManager.showHUD(info, callback);
}
*/

// 隐藏HUD
function dismissHUD(callback) {
    navigator.HUDManager.dismissHUD(callback);
}

// 附件格式
var AttachmentContentFormat = {};
// base64字符串
AttachmentContentFormat.Base64 = "Base64";
// 文件路径
AttachmentContentFormat.FilePath = "FilePath";
// URL
AttachmentContentFormat.URL = "URL";

/*
* arrPhoneNumbers: 目标号码的数组 类型: 字符串数组
* arrAttachments: 附件信息内容
* attachment
* {
*   content: 附件内容 类型: 字符串
*   format: 附件格式 类型: AttachmentContentFormat
*   filename: 文件名 类型: 字符串
*   type: 类型 (若format为AttachmentContentFormat.URL时则不用传)
* }
* */

// 发送短信
function sendSMSMessage(body, arrPhoneNumbers, arrAttachments, callback) {
    navigator.SMSController.sendMessage(body, arrPhoneNumbers, arrAttachments, callback);
}

// 获取当前登录用户的信息数据
function getUserInfo(callback) {
    navigator.userManager.getUserInfo(callback);
}

// 设置离线模式
function setAppMode(value, callback) {
    navigator.userManager.setAppMode(value, callback);
}

// 关闭离线模式
function getAppMode(callback) {
    navigator.userManager.getAppMode(callback);
}


// 退出登录
function logOutUser(callback) {
    navigator.userManager.exitLogin(callback);
}

function syncData(tables, callback) {
    navigator.ajaxWorker.loadAndSave(tables,callback);
}

function submitToAjaxWorker(params, callback) {
    navigator.ajaxWorker.requestToAjax(params, callback)
}

function downloadPhoto(photoKey, callback) {
    navigator.FileHelper.downloadFile(photoKey,callback);
}

function uploadAllAjaxTask(callback) {
    navigator.ajaxWorker.autoRequest(callback);
}

function uploadAjaxTask(ajaxIDs, callback){
    navigator.ajaxWorker.autoRequestByIDs(ajaxIDs, callback);
}

//压缩图片
function graphicsOptimiser(options,callback) {
    navigator.FileHelper.getThumbnailImgFile(options,callback)
}

function badgeMessage(type,count,callback) {
    navigator.TabBarBadge.badgeMessage(type,count,callback)
}

function getPhotosProgress(callback) {
    navigator.ajaxWorker.getAllProgress(callback);
}

function killLaunch(callback) {
    navigator.LaunchManager.killLaunch(callback);
}

//清除缓存
function clearCache(callback) {
    navigator.userManager.clearData(callback);
}

//获取缓存数据大小
function getDataSize(callback) {    
    navigator.CacheDataManager.getDataSize(callback);
}


